package com.holly.unit.deform.api.adapter;

import cn.hutool.core.convert.Convert;
import com.holly.unit.db.api.pojo.page.PageResult;

import java.util.List;

/**
 * 类描述:
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/4/8 16:15
 */
public class PageResultAdapterFactory {

    /**
     * 将mybatis-plus的page转成自定义的PageResult
     *
     * @author holly
     * @date 2020/10/15 15:53
     */
    public static <T> PageResultAdapter<T> createPageResultAdapter(PageResult<T> page) {
        PageResultAdapter<T> pageResult = new PageResultAdapter<>();
        pageResult.setRecords(page.getRows());
        pageResult.setTotal(Convert.toInt(page.getTotalRows()));
        pageResult.setCurrent(Convert.toInt(page.getPageNo()));
        pageResult.setSize(Convert.toInt(page.getPageSize()));
        return pageResult;
    }

    /**
     * 将mybatis-plus的page转成自定义的PageResult
     *
     * @author holly
     * @date 2020/10/15 15:53
     */
    public static <T> PageResultAdapter<T> createPageResultAdapter(List<T> rows, Long count, Integer pageSize, Integer pageNo) {
        PageResultAdapter<T> pageResult = new PageResultAdapter<>();
        pageResult.setRecords(rows);
        pageResult.setTotal(Convert.toInt(count));
        pageResult.setCurrent(pageNo);
        pageResult.setSize(pageSize);
        return pageResult;
    }

    /**
     * 表单设计器中 查询List的结果 封装到了records这个字段中【注意】
     *
     * @author holly
     * @date 2020/10/15 15:53
     */
    public static <T> PageResultAdapter<T> createListResultAdapter(List<T> rows, Integer pageSize, Integer pageNo) {
        PageResultAdapter<T> pageResult = new PageResultAdapter<>();
        pageResult.setRecords(rows);
        pageResult.setCurrent(pageNo);
        pageResult.setSize(pageSize);
        return pageResult;
    }

}
